﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Dominio;

namespace PresentacionWeb.ControlesDeUsuario
{
    public partial class ABMCategorias : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            lblErrorModificacion.Text = "";
            lblErrorBaja.Text = "";
            lblErrorAlta.Text = "";
            if (!IsPostBack)
            {
                cargarCategorias(gvCategorias);
                cargarCategorias(gvCategoriasBaja);
            }
        }

        protected void btnCrear_Click(object sender, EventArgs e)
        {
            Dominio.AdministracionHandler admin = new Dominio.FabricaConcreta().getAdministracionHandler();
            BLCategoria categoria;
            if (txtCategoria.Text != "")
            {
                try
                {
                    categoria = new BLCategoria();
                    categoria.CatDescripcion = txtCategoria.Text;
                    categoria.CatEstado = 0;
                    admin.altaCategoria(categoria);
                }
                catch (Exception ex)
                {
                    lblErrorAlta.Text = "No se pudo crear la categoria. ";
                    lblErrorAlta.Text += ex.Message;
                }
            }
            else
                lblErrorAlta.Text = "Debe ingresar un nombre a la categoria.";


            lblErrorAlta.Text = "Categoria creado correctamente.";
        }

        protected void cargarCategorias(GridView gv)
        {
            Dominio.AdministracionHandler busqueda = new FabricaConcreta().getAdministracionHandler();
            
            try
            {

                List<BLCategoria> lista = busqueda.getBLCategorias();
                
                gv.DataSource = lista;
                gv.AllowPaging = true;
                gv.AllowSorting = true;
                gv.PageSize = 10;
                gv.DataBind();
            
            }
            catch (Exception ex)
            {
                lblErrorModificacion.Text = "No se pudo cargar la lista de categorias. ";
                lblErrorModificacion.Text += ex.Message;
            }
        }

        protected void gvCategorias_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (gvCategorias.SelectedIndex > -1)
            {
                txtIdCategoria.Text = gvCategorias.Rows[gvCategorias.SelectedIndex].Cells[1].Text;
                txtNombreCatModif.Text = gvCategorias.Rows[gvCategorias.SelectedIndex].Cells[2].Text;
                cbEstadoCategoria.Checked = gvCategorias.Rows[gvCategorias.SelectedIndex].Cells[3].Text == "0";
            }
        }

        protected void TabContainer1_ActiveTabChanged(object sender, EventArgs e)
        {
            if (TabContainer1.ActiveTab.HeaderText == "Modificacion")
                cargarCategorias(gvCategorias);
            else if (TabContainer1.ActiveTab.HeaderText == "Baja")
                cargarCategorias(gvCategoriasBaja);
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            AdministracionHandler admin = new FabricaConcreta().getAdministracionHandler();
            if (txtIdCategoria.Text != "")
            {
                if (txtNombreCatModif.Text != "")
                {
                    try
                    {
                        BLCategoria cat = admin.getBLCategoria(int.Parse(txtIdCategoria.Text));
                        cat.CatDescripcion = txtNombreCatModif.Text;
                        if (!cbEstadoCategoria.Checked)
                            cat.CatEstado = 0;
                        else
                            cat.CatEstado = 1;
                        admin.modificarCategoria(cat);
                    }
                    catch (Exception ex)
                    {
                        lblErrorModificacion.Text = "No se pudo modificar la categoria. ";
                        lblErrorModificacion.Text += ex.Message;
                    }
                }
                else
                    lblErrorModificacion.Text = "Debe ingresar un nombre a la categoria";
            }
        }

        protected void btnEliminarCategorias_Click(object sender, EventArgs e)
        {
            Dominio.AdministracionHandler admin = new FabricaConcreta().getAdministracionHandler();
            foreach (GridViewRow fila in gvCategoriasBaja.Rows)
            {
                CheckBox cbSelector = (CheckBox)fila.FindControl("cbSeleccionada");
                if (cbSelector != null && cbSelector.Checked)
                    try
                    {
                        
                        admin.bajaCategoria(admin.getBLCategoria(int.Parse(fila.Cells[2].Text)));
                        gvCategoriasBaja.DeleteRow(fila.RowIndex);
                    }
                    catch (Exception ex)
                    {
                        lblErrorBaja.Text = "No se pudo Eliminar las categorias.";
                        lblErrorBaja.Text += " " + ex.Message;

                    }
            }
        }


    }
}